<?php

include 'com/aristo/ingenieros/util/constSecretary.php';
include 'com/aristo/ingenieros/presenter/CarreraPresenter.php';
include 'com/aristo/ingenieros/view/AristoJSON.php';

use com\aristo\ingenieros\util\Connection;
use com\aristo\ingenieros\view\Response;
use com\aristo\ingenieros\util\constSecretary;
use com\aristo\ingenieros\presenter\CarreraPresenter;
use com\aristo\ingenieros\view\AristoJSON;

if (isset($_REQUEST['node'])) {
    $node = $_REQUEST['node'];
    $response = new Response();

    switch ($node) {
        case constSecretary::$_GET_CARRERAS:
            $conexion = Connection::getConnection();
            $termino = $_REQUEST['term'];
            $autocomplete = (isset($_REQUEST['auto'])) ? $_REQUEST['auto'] : "";

            $response = CarreraPresenter::getCarreras($termino, $conexion);
            //echo var_dump($response);
            $respuesta = new AristoJSON();
            $respuesta->setEstado('SUCCESS');

            if ($response->getStatus() == Response::$STATUS_OK) {
                //echo var_dump($response->getType());
                $respuesta->setData($response->getResult());
                $respuesta->setDescripcion('Datos cargados');
            } else {
                $respuesta->setEstado('ERROR');
                $respuesta->setDescripcion($response->getResult());
            }
            if ($autocomplete === "") {
                echo $respuesta->toJSON();
            } else {
                echo json_encode($respuesta->getData());
            }
            break;
        case constSecretary::$_POST_CARRERA:
            $conexion = Connection::getConnection();
            $tipo = $_REQUEST['tipo'];
            $descripcion = $_REQUEST['descripcion'];
            $resolucion = $_REQUEST['resolucion'];
            $anho = $_REQUEST['anho'];
            
            $response = CarreraPresenter::addCarrera($tipo, $descripcion, $resolucion, $anho, $conexion);
            $respuesta = new AristoJSON();
            $respuesta->setEstado('SUCCESS');

            if ($response->getStatus() == Response::$STATUS_OK) {
                $respuesta->setData($response->getResult());
                $respuesta->setDescripcion('Datos agregados');
                $conexion->commit();
            } else {
                $respuesta->setEstado('ERROR');
                $respuesta->setDescripcion($response->getResult());
                $conexion->rollback();
            }
            echo $respuesta->toJSON();            
            break;
        case constSecretary::$_GET_CARRERA:
            $conexion = Connection::getConnection();
            $id = $_REQUEST['id'];
            
            $response = CarreraPresenter::getCarrera($id, $conexion);
            //echo var_dump($response);
            $respuesta = new AristoJSON();
            $respuesta->setEstado('SUCCESS');

            if ($response->getStatus() == Response::$STATUS_OK) {
                $respuesta->setData($response->getResult());
                $respuesta->setDescripcion('Datos cargados');
            } else {
                $respuesta->setEstado('ERROR');
                $respuesta->setDescripcion($response->getResult());
            }
            echo json_encode($respuesta->getData());
            break;
        case constSecretary::$_PUT_CARRERA:
            $conexion = Connection::getConnection();
            $id = $_REQUEST['id'];
            $descripcion = $_REQUEST['descripcion'];
            $resolucion = $_REQUEST['resolucion'];
            $anho = $_REQUEST['anho'];
            
            $response = CarreraPresenter::updateCarrera($id, $descripcion, $resolucion, $anho, $conexion);
            $respuesta = new AristoJSON();
            $respuesta->setEstado('SUCCESS');

            if ($response->getStatus() == Response::$STATUS_OK) {
                $respuesta->setData($response->getResult());
                $respuesta->setDescripcion('Datos actualizados');
                $conexion->commit();
            } else {
                $respuesta->setEstado('ERROR');
                $respuesta->setDescripcion($response->getResult());
                $conexion->rollback();
            }
            echo $respuesta->toJSON();
            break;
        default: break;
    }
}